home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qbsnip.zip / QSTAR.BAS < prev    next >
BASIC Source File  |  1997-06-21  |  16KB  |  420 lines

  1. 'From: Michael Teator
  2. 'Skream@aol.com
  3. 'Date: 11-06-94
  4.  
  5. DEFINT A-Z
  6.  
  7. DECLARE FUNCTION ComputerType ()
  8. DECLARE SUB Fade (ty, tx, text$)
  9.  
  10. DEF FNMove (xp%, yp%, xr%, yr%, n%, vstop%)
  11.   ul = yr: ll = xr: bl = vstop - yr: rl = 319 - xr
  12.   SELECT CASE n
  13.     CASE 1
  14.       IF yp > ul THEN IF xp > ll THEN FNMove = 1 ELSE FNMove = 2 ELSE IF xp > ll THEN FNMove = 4 ELSE FNMove = 3
  15.     CASE 2
  16.       IF yp > ul THEN IF xp < rl THEN FNMove = 2 ELSE FNMove = 1 ELSE IF xp < rl THEN FNMove = 3 ELSE FNMove = 4
  17.     CASE 3
  18.       IF yp < bl THEN IF xp < rl THEN FNMove = 3 ELSE FNMove = 4 ELSE IF xp < rl THEN FNMove = 2 ELSE FNMove = 1
  19.     CASE 4
  20.       IF yp < bl THEN IF xp > ll THEN FNMove = 4 ELSE FNMove = 3 ELSE IF xp > ll THEN FNMove = 1 ELSE FNMove = 2
  21.   END SELECT
  22. END DEF
  23.  
  24. OPTION BASE 1
  25. RANDOMIZE TIMER
  26. DIM SHARED ScrollDelay
  27.  
  28. ScrollDelay = ComputerType
  29.  
  30. SCREEN 7, , 0
  31. Fade 9, 17, "QStar!"
  32. Fade 10, 12, "by Michael Teator"
  33. Fade 12, 7, "Please wait... initializing."
  34.  
  35. Stars = 100
  36. NumBoxes = 4
  37. Dist = 5
  38. LineClr = 9
  39. DelayClr = LineClr - 8
  40. Grid3DClr = 5
  41. Counter = 1
  42. NumDelayVectors = 8
  43. NumCircles = 20
  44.  
  45. DIM ReflTxt#(124)
  46. DIM BoxXradius(NumBoxes), BoxYradius(NumBoxes), BoxX(NumBoxes), BoxY(NumBoxes), BoxDir(NumBoxes), BoxClr(NumBoxes)
  47. DIM StarX(Stars), StarY(Stars), StarSpeed(Stars), StarClr(Stars)
  48. DIM LineX(2), LineY(2), LineDir(2), DelayVector(4 * NumDelayVectors)
  49. DIM Colors(4)
  50. DIM ForeCircles(3 * NumCircles), CircleR(NumCircles * 3 + 1)
  51.  
  52. RESTORE TubeData
  53. READ NumFrames
  54. DIM CircleX(NumFrames), CircleY(NumFrames), CircleC(NumFrames)
  55. FOR num = 1 TO NumFrames
  56.   READ CircleX(num), CircleY(num)
  57. NEXT
  58.  
  59. FOR num = 1 TO NumFrames
  60.   clr = INT(RND * 2) + 1
  61.   IF clr = 1 THEN CircleC(num) = 9 ELSE CircleC(num) = 1
  62. NEXT
  63.  
  64. CircleR(1) = 40
  65.  
  66. FOR num = 1 TO NumCircles * 3 STEP 3
  67.   CircleR(num + 1) = num ^ (3 / 2) / 2 + CircleR(1)
  68. NEXT
  69.  
  70. RESTORE Colors
  71. FOR num = 1 TO 4
  72.   READ Colors(num)
  73. NEXT
  74.  
  75. PickClr = 1
  76. BoxCount = 1
  77. DO
  78.   BoxClr(BoxCount) = Colors(PickClr)
  79.   IF PickClr < 4 THEN PickClr = PickClr + 1 ELSE PickClr = 1
  80.   BoxCount = BoxCount + 1
  81. LOOP UNTIL BoxCount > NumBoxes
  82.  
  83. LineX(1) = 62
  84. LineY(1) = 53
  85. LineX(2) = 120
  86. LineY(2) = 198
  87. LineDir(1) = 1
  88. LineDir(2) = 2
  89.  
  90. FOR num = 1 TO Stars
  91.   StarPlane = INT(RND * 4) + 1
  92.   SELECT CASE StarPlane
  93.     CASE 1
  94.       StarSpeed(num) = 8
  95.       StarClr(num) = 15
  96.       StarX(num) = INT(RND * 319)
  97.       StarY(num) = INT(RND * 199)
  98.     CASE 2
  99.       StarSpeed(num) = 5
  100.       StarClr(num) = 7
  101.       StarX(num) = INT(RND * 319)
  102.       StarY(num) = INT(RND * 181)
  103.     CASE 3
  104.       StarSpeed(num) = 3
  105.       StarClr(num) = 7
  106.       StarX(num) = INT(RND * 319)
  107.       StarY(num) = INT(RND * 163)
  108.     CASE 4
  109.       StarSpeed(num) = 1
  110.       StarClr(num) = 8
  111.       StarX(num) = INT(RND * 319)
  112.       StarY(num) = INT(RND * 144)
  113.   END SELECT
  114. NEXT
  115.  
  116. FOR num = 1 TO NumBoxes
  117.   BoxXradius(num) = INT(RND * 20) + 1
  118.   BoxYradius(num) = INT(RND * 20) + 1
  119.   BoxX(num) = INT(RND * (319 - BoxXradius(num) * 2)) + BoxXradius(num)
  120.   BoxY(num) = INT(RND * (158 + num * 4 - BoxYradius(num) * 2)) + BoxYradius(num)
  121.   BoxDir(num) = INT(RND * 4) + 1
  122. NEXT
  123.  
  124. RESTORE Scroller
  125. DO
  126.   READ ScrollTxt$
  127.   Scroller$ = Scroller$ + ScrollTxt$
  128. LOOP UNTIL ScrollTxt$ = ""
  129. Scroller$ = SPACE$(30) + Scroller$
  130. TxtLength = LEN(Scroller$) + 1
  131.  
  132. FOR Frames = 2 TO 6
  133.   SCREEN , , Frames, 0
  134.   SELECT CASE Frames
  135.     CASE 2: RESTORE Grid3DFrame2
  136.     CASE 3: RESTORE Grid3DFrame3
  137.     CASE 4: RESTORE Grid3DFrame4
  138.     CASE 5: RESTORE Grid3DFrame5
  139.     CASE 6: RESTORE Grid3DFrame6
  140.   END SELECT
  141.   FOR Grid3DLine = 1 TO 8
  142.     READ x1!, y1!, x2!, y2!
  143.     LINE (x1!, y1!)-(x2!, y2!), Grid3DClr
  144.   NEXT
  145.   RESTORE Grid3DCommons
  146.   FOR Grid3DLine = 1 TO 15
  147.     READ x1, y1, x2, y2
  148.     LINE (x1, y1)-(x2, y2), Grid3DClr
  149.   NEXT
  150. NEXT
  151.  
  152. SCREEN , , 1, 0
  153. RESTORE Grid3DFrame1
  154. FOR Grid3DLine = 1 TO 6
  155.     READ x1, y1, x2, y2
  156.     LINE (x1, y1)-(x2, y2), Grid3DClr
  157.     PCOPY 1, 0
  158. NEXT
  159. RESTORE Grid3DCommons
  160. FOR Grid3DLine = 1 TO 15
  161.     READ x1, y1, x2, y2
  162.     LINE (x1, y1)-(x2, y2), Grid3DClr
  163.     PCOPY 1, 0
  164. NEXT
  165.  
  166. SCREEN , , 0
  167. LOCATE 12, 18: COLOR 10: PRINT "READY!"
  168. SLEEP 1
  169.  
  170. DO
  171.   SCREEN , , 7, 0
  172.   PCOPY 1, 7
  173.   IF Counter < TxtLength THEN
  174.     LOCATE 18, 5: COLOR 4: PRINT MID$(Scroller$, Counter, 30)
  175.     TopLine = 136
  176.     BotRefl = 151
  177.     DO
  178.       GET (32, TopLine)-(270, TopLine), ReflTxt#
  179.       PUT (32, BotRefl), ReflTxt#, XOR
  180.       TopLine = TopLine + 1
  181.       BotRefl = BotRefl - 1
  182.     LOOP UNTIL TopLine = 143
  183.     IF counter2 = ScrollDelay THEN counter2 = 0: Counter = Counter + 1 ELSE counter2 = counter2 + 1
  184.   ELSE
  185.     GOTO Part2
  186.   END IF
  187.   FOR NumStars = 1 TO Stars
  188.     StarX(NumStars) = StarX(NumStars) - StarSpeed(NumStars)
  189.     IF StarX(NumStars) < 0 THEN
  190.       StarX(NumStars) = 319
  191.       SELECT CASE StarSpeed(NumStars)
  192.         CASE 8
  193.           StarY(NumStars) = INT(RND * 199)
  194.         CASE 5
  195.           StarY(NumStars) = INT(RND * 181)
  196.         CASE 3
  197.           StarY(NumStars) = INT(RND * 163)
  198.         CASE 1
  199.           StarY(NumStars) = INT(RND * 144)
  200.       END SELECT
  201.     END IF
  202.     PSET (StarX(NumStars), StarY(NumStars)), StarClr(NumStars)
  203.   NEXT
  204.   FOR num = 1 TO NumBoxes
  205.     LINE (BoxX(num) - BoxXradius(num), BoxY(num) - BoxYradius(num))-(BoxX(num) + BoxXradius(num), BoxY(num) + BoxYradius(num)), BoxClr(num), B
  206.     BoxDir(num) = FNMove(BoxX(num), BoxY(num), BoxXradius(num), BoxYradius(num), BoxDir(num), 158 + num * 4)
  207.     SELECT CASE BoxDir(num)
  208.       CASE 4: BoxY(num) = BoxY(num) + 1: BoxX(num) = BoxX(num) - 1
  209.       CASE 1: BoxY(num) = BoxY(num) - 1: BoxX(num) = BoxX(num) - 1
  210.       CASE 3: BoxY(num) = BoxY(num) + 1: BoxX(num) = BoxX(num) + 1
  211.       CASE 2: BoxY(num) = BoxY(num) - 1: BoxX(num) = BoxX(num) + 1
  212.     END SELECT
  213.   NEXT
  214.   FOR Delays = 1 TO NumDelayVectors * 4 STEP 4
  215.     LINE (DelayVector(Delays), DelayVector(Delays + 1))-(DelayVector(Delays + 2), DelayVector(Delays + 3)), DelayClr
  216.   NEXT
  217.   FOR num = 1 TO 2
  218.     LineDir(num) = FNMove(LineX(num), LineY(num), 0, 0, LineDir(num), 199)
  219.     SELECT CASE LineDir(num)
  220.       CASE 4: LineY(num) = LineY(num) + Dist: LineX(num) = LineX(num) - Dist
  221.       CASE 1: LineY(num) = LineY(num) - Dist: LineX(num) = LineX(num) - Dist
  222.       CASE 3: LineY(num) = LineY(num) + Dist: LineX(num) = LineX(num) + Dist
  223.       CASE 2: LineY(num) = LineY(num) - Dist: LineX(num) = LineX(num) + Dist
  224.     END SELECT
  225.   NEXT
  226.   LINE (LineX(1), LineY(1))-(LineX(2), LineY(2)), LineClr
  227.   FOR Shift = NumDelayVectors * 4 TO 8 STEP -4
  228.     DelayVector(Shift) = DelayVector(Shift - 4)
  229.     DelayVector(Shift - 1) = DelayVector(Shift - 5)
  230.     DelayVector(Shift - 2) = DelayVector(Shift - 6)
  231.     DelayVector(Shift - 3) = DelayVector(Shift - 7)
  232.   NEXT
  233.   DelayVector(1) = LineX(1)
  234.   DelayVector(2) = LineY(1)
  235.   DelayVector(3) = LineX(2)
  236.   DelayVector(4) = LineY(2)
  237.   PCOPY 7, 0
  238.   SCREEN , , 0, 0
  239. LOOP
  240.  
  241. Part2:
  242.  
  243. FrameCounter = 1
  244. FOR FrameNum = 1 TO NumFrames
  245.   SCREEN , , 7, 0
  246.   PCOPY FrameCounter, 7
  247.   FrameCounter = FrameCounter + 1
  248.   IF FrameCounter > 6 THEN FrameCounter = 1
  249.   CIRCLE (CircleX(FrameNum), CircleY(FrameNum)), CircleR(1), CircleC(FrameNum)
  250.   CountEm = NumCircles + 1
  251.   FOR Tube = 1 TO NumCircles * 3 STEP 3
  252.     CountEm = CountEm - 1
  253.     IF ForeCircles(Tube) <> 0 THEN
  254.       AdjCircleX = CINT((ForeCircles(Tube) * CountEm * 2 + 160) / (CountEm * 2 + 1))
  255.       AdjCircleY = CINT((ForeCircles(Tube + 1) * CountEm * 2 + 99) / (CountEm * 2 + 1))
  256.       CIRCLE (AdjCircleX, AdjCircleY), CircleR(Tube + 1), ForeCircles(Tube + 2)
  257.     END IF
  258.   NEXT
  259.   FOR Shift = NumCircles * 3 TO 6 STEP -3
  260.     ForeCircles(Shift) = ForeCircles(Shift - 3)
  261.     ForeCircles(Shift - 1) = ForeCircles(Shift - 4)
  262.     ForeCircles(Shift - 2) = ForeCircles(Shift - 5)
  263.   NEXT
  264.   ForeCircles(1) = CircleX(FrameNum)
  265.   ForeCircles(2) = CircleY(FrameNum)
  266.   ForeCircles(3) = CircleC(FrameNum)
  267.   PCOPY 7, 0
  268.   SCREEN , , 0, 0
  269. NEXT
  270.  
  271. SCREEN 0
  272. WIDTH 80
  273. LOCATE 1, 1
  274. RESTORE Logo
  275. FOR lines = 1 TO 20
  276.   READ OneLine$
  277.   Fade lines, 1, OneLine$
  278. NEXT
  279. LOCATE 22
  280. DO: LOOP UNTIL INKEY$ <> ""
  281. SCREEN 0, 0, 0: WIDTH 80: PALETTE: CLS
  282. SYSTEM
  283.  
  284. Scroller:
  285. DATA "Hi!Welcome to QStar!Like the graphics?"
  286. DATA "Someone told me this was impossible with QBasic... "
  287. DATA "guess my poor friend was wrong!"
  288. DATA "This is 320x200x16 graphics and runs at 30fps on a fast 486."
  289. DATA "Write me and tell me what you think!"
  290. DATA "America Online: Skream."
  291. DATA "Internet: skream@aol.com"
  292. DATA "Next demo: Flying into the starfield and some other tricks!"
  293. DATA "Code by Skream.Later... :)"
  294. DATA ""
  295.  
  296. Grid3DFrame1:
  297. DATA 0,144,319,144,0,146,319,146,0,151,319,151,0,160,319,160
  298. DATA 0,175,319,175,0,199,319,199,0,199,319,199,0,199,319,199
  299.  
  300. Grid3DFrame2:
  301. DATA 0,144,319,144,0,145,319,145,0,146,319,146,0,152,319,152
  302. DATA 0,162,319,162,0,178,319,178,0,199,319,199,0,199,319,199
  303.  
  304. Grid3DFrame3:
  305. DATA 0,144,319,144,0,145,319,145,0,147,319,147,0,153,319,153
  306. DATA 0,164,319,164,0,182,319,182,0,199,319,199,0,199,319,199
  307.  
  308. Grid3DFrame4:
  309. DATA 0,144,319,144,0,146,319,146,0,148,319,148,0,154,319,154
  310. DATA 0,166,319,166,0,186,319,186,0,199,319,199,0,199,319,199
  311.  
  312. Grid3DFrame5:
  313. DATA 0,144,319,144,0,146,319,146,0,149,319,149,0,156,319,156
  314. DATA 0,169,319,169,0,190,319,190,0,199,319,199,0,199,319,199
  315.  
  316. Grid3DFrame6:
  317. DATA 0,144,319,144,0,145,319,145,0,147,319,147,0,150,319,150
  318. DATA 0,158,319,158,0,172,319,172,0,194,319,194,0,199,319,199
  319.  
  320. Grid3DCommons:
  321. DATA 280,144,319,153, 200,144,225,199, 220,144,275,199, 240,144,319,189
  322. DATA 260,144,319,167, 300,144,319,147, 140,144,130,199, 120,144, 95,199
  323. DATA 100,144, 45,199,80,144,0,189,60,144,0,167,40,144,0,153
  324. DATA 20,144,0,147, 160,144,160,199, 180,144,190,199
  325.  
  326. Colors:
  327. DATA 10,11,12,14
  328.  
  329. Logo:
  330. DATA "┌──────────────────────────────────────────────────────────────────────────────┐
  331. DATA "│   ·            ·         ·         ·        ·   .  ·       ·           .     │
  332. DATA "│·      ███████╗ ██╗  ██╗ ██████╗ .███████╗  █████╗. ███╗   ███╗ ██╗ .     ·   │
  333. DATA "│    ·  ██╔════╝·██║ ██╔╝ ██╔══██╗ ██╔════╝ ██╔══██╗ ████╗ ████║ ██║           │
  334. DATA "│       ███████╗ █████╔╝  ██████╔╝ █████╗  ·███████║ ██╔████╔██║ ██║   ·       │
  335. DATA "│ ·     ╚════██║ ██╔═██╗  ██╔══██╗ ██╔══╝.  ██╔══██║ ██║╚██╔╝██║ ╚═╝        ·  │
  336. DATA "│       ███████║ ██║  ██╗ ██║ ·██║ ███████╗ ██║  ██║ ██║.╚═╝ ██║ ██╗    ·      │
  337. DATA "│    ·  ╚══════╝ ╚═╝  ╚═╝.╚═╝  ╚═╝ ╚══════╝ ╚═╝. ╚═╝.╚═╝   · ╚═╝ ╚═╝      ·    │
  338. DATA "│          .  ·      ·         .         ·      ·        ·    ·                │
  339. DATA "│    ·  ╓─────┐ ╥─┐ .╓──┐  ╓─┐ ─╥─ ╓──┐    ╥──┐ ╥──┐ ╓─╥─┐ ╓──┐  ╓─┐   ·       │
  340. DATA "│·      ║ ·   │ ╟─┴┐ ╟──┤. ╙─┐  ║  ║    ·  ║  │ ╟─ · ║ ║ │ ║ ·│  ╙─┐      ·    │
  341. DATA "│  ·    ║   · │ ╨──┘ ╨  ┴ ╙──┘ ─╨─ ╙──┘    ╨──┘ ╨──┘ ╨ ╨ ┴ ╙──┘ ╙──┘           │
  342. DATA "│       ║     │     ·       write to:       ·        ·         .        ·      │
  343. DATA "│·      ╙───┼─┘         skream@aol.com           .               ·          ·  │
  344. DATA "│  ·   ·                     ·   ·      ·                 ·           ·        │
  345. DATA "│                ·       ·                  See ya later...       ·       ·    │
  346. DATA "│      Look for more demos soon!      ·          ·                             │
  347. DATA "│           ·      ·      This has been a presentation of Skream! design  ·  · │
  348. DATA "└──────────────────────────────────────────────────────────────────────────────┘
  349. DATA "                             press a key . . .
  350.  
  351.  
  352. TubeData:
  353. ' Data created by Path Generator Version 1.0
  354. ' by Michael Teator in May 1994
  355. ' Comment: This one should look great!-Skream
  356. ' Date: 05-24-1994 Time: 08:32:11
  357. ' Number of points
  358. DATA 474
  359. ' ------ Path data ------
  360. DATA 159,99,159,99,159,99,159,99,159,99,159,99,159,99,158,100,157,100,156,101,154,102,153,103,152,105,149,107,147,108,145,110,144,112,139,114,136,116,130,119
  361. DATA 122,122,116,125,108,128,101,132,92,136,83,139,75,142,67,145,57,146,47,146,40,147,38,147,45,146,53,146,59,145,69,142,82,138,95,134,114,127,130,121
  362. DATA 148,113,162,103,171,97,185,88,196,81,209,74,220,66,230,61,242,54,252,48,264,42,270,36,267,38,261,43,256,48,250,53,240,60,230,68,218,75,209,82
  363. DATA 198,88,188,93,177,96,164,99,151,101,139,102,126,102,113,102,104,102,89,102,78,101,66,101,51,101,40,101,29,101,19,101,26,101,42,101,57,101,71,100
  364. DATA 90,98,100,98,110,97,124,97,140,97,158,99,177,102,190,105,206,111,216,116,228,122,238,129,251,136,264,144,276,152,281,154,285,157,269,157,256,155,240,152
  365. DATA 221,148,205,142,185,135,163,129,150,126,136,122,119,119,106,117,94,115,80,115,69,116,55,119,51,121,53,127,60,128,75,128,89,128,108,127,129,126,144,124
  366. DATA 160,122,172,121,189,118,212,117,224,116,236,113,249,108,257,103,264,97,269,87,269,78,267,76,260,81,254,90,250,96,242,103,234,110,225,115,212,120,200,125
  367. DATA 188,129,173,133,159,135,139,135,128,134,128,132,136,130,149,130,165,130,182,128,197,123,209,118,225,110,237,103,245,97,254,90,263,82,266,78,262,91,257,98
  368. DATA 247,103,232,108,218,111,206,115,196,117,185,115,172,110,164,104,154,95,144,85,134,76,123,65,113,58,100,53,84,48,74,48,62,48,52,51,47,57,42,66
  369. DATA 41,70,44,75,51,78,60,76,69,71,78,65,86,59,94,54,103,49,114,45,128,44,142,46,150,50,156,56,158,64,161,74,163,84,163,96,163,108,163,116
  370. DATA 164,126,166,138,167,146,170,152,178,161,188,164,190,160,186,155,181,153,173,151,168,142,165,130,165,116,165,100,164,83,164,68,164,54,162,40,162,36,160,44
  371. DATA 159,58,158,72,158,89,158,102,158,117,158,129,159,140,159,153,158,162,158,169,159,167,164,158,167,144,167,129,167,115,168,96,168,85,168,68,168,52,166,40
  372. DATA 164,32,161,31,158,41,157,52,157,66,158,82,158,98,159,113,158,127,158,138,158,147,156,156,155,160,152,162,148,160,143,156,135,146,127,137,117,122,108,108
  373. DATA 99,93,91,79,82,66,75,59,68,55,59,48,47,40,52,47,60,53,73,59,86,68,103,80,117,90,132,98,144,105,162,114,183,123,198,130,218,140,232,146
  374. DATA 250,154,272,161,280,162,284,156,279,150,268,145,252,139,236,132,227,129,213,125,205,116,199,100,198,79,198,64,200,52,202,43,207,36,208,41,207,53,203,67
  375. DATA 196,86,188,95,178,104,169,110,159,116,146,122,135,128,124,137,114,144,105,150,92,155,82,156,66,157,63,156,75,154,85,152,96,149,108,144,118,139,128,132
  376. DATA 138,124,146,113,148,101,142,92,133,89,123,90,109,93,92,94,78,95,61,95,48,94,41,92,42,85,49,78,57,72,71,63,86,55,105,47,119,44,133,42
  377. DATA 152,41,170,41,188,42,208,46,224,51,236,57,249,65,258,76,265,89,266,99,266,112,263,126,257,138,250,147,240,155,231,158,223,160,214,161,201,160,188,156
  378. DATA 175,149,165,140,160,132,150,118,141,107,130,99,116,98,111,105,111,113,116,120,124,127,134,137,146,144,160,147,176,146,190,141,199,131,205,119,205,105,202,93
  379. DATA 191,81,186,79,181,87,175,100,169,110,161,124,155,138,149,148,144,153,147,150,155,137,166,124,176,113,183,97,187,83,188,69,186,53,182,44,181,53,183,67
  380. DATA 186,75,192,86,204,94,224,99,238,100,256,99,272,94,288,91,294,88,285,90,270,95,252,98,239,100,226,103,206,106,181,106,156,106,137,107,122,107,113,106
  381. DATA 94,108,82,109,75,110,86,112,103,111,124,109,145,107,172,102,194,97,210,90,220,83,237,70,245,64,244,74,232,90,218,103,206,111,189,115,171,117,154,112
  382. DATA 141,103,136,88,136,66,136,55,137,47,135,56,133,70,125,81,112,87,92,91,87,85,97,76,109,76,119,85,123,100,124,113,126,124,131,127,143,125,152,118
  383. DATA 156,112,159,107,162,103,163,100,164,100,166,99,167,99,168,99,169,99,169,99,169,99,169,99,169,99,169,99
  384.  
  385. FUNCTION ComputerType
  386.  
  387. CLS
  388. PRINT "Welcome to QStar!"
  389. PRINT
  390. PRINT "Please select the speed computer you are using:"
  391. PRINT "(1) 286"
  392. PRINT "(2) Slow 386"
  393. PRINT "(3) Fast 386 or slow 486"
  394. PRINT "(4) Fast 486"
  395. PRINT "(5) Pentium"
  396. PRINT : PRINT
  397. PRINT "Please note that these settings only affect the scroller."
  398. DO
  399.   selection$ = INKEY$
  400.   SELECT CASE selection$
  401.     CASE "1" TO "5"
  402.       ComputerType = VAL(selection$) - 1
  403.       EXIT FUNCTION
  404.   END SELECT
  405. LOOP
  406.  
  407. END FUNCTION
  408.  
  409. SUB Fade (ty, tx, text$)
  410.  
  411. LOCATE ty, tx: COLOR 8: PRINT text$
  412. FOR n = 1 TO (ScrollDelay * 5000): NEXT
  413. LOCATE ty, tx: COLOR 7: PRINT text$
  414. FOR n = 1 TO (ScrollDelay * 5000): NEXT
  415. LOCATE ty, tx: COLOR 15: PRINT text$
  416. FOR n = 1 TO (ScrollDelay * 5000): NEXT
  417.  
  418. END SUB
  419.  
  420.